// #ifndef VUE3
import Vue from 'vue';
import App from './App';
import { $http } from '@escook/request-miniprogram';
//⭐⭐ main.js 文件
// main.js，注意要在use方法之后执行
import uView from '@/uni_modules/uview-ui';
Vue.use(uView);
import { BaseUrl } from '@/config/const.js';
import { get_token, reset_token } from '@/auth/token';
import shareWx from '@/utils/shareWx';
Vue.mixin(shareWx);
import plugins from './plugins'; // plugins
Vue.use(plugins);
// 路由守卫
import '@/utils/graud.js';
// 初始化工具函数
import '@/utils/init.js';
// 如此配置即可
// uni.$u.config.unit = 'rpx'
// 调用setConfig方法，方法内部会进行对象属性深度合并，可以放心嵌套配置
// 需要在Vue.use(uView)之后执行
uni.$u.setConfig({
  // 修改$u.config对象的属性
  config: {
    // 修改默认单位为rpx，相当于执行 uni.$u.config.unit = 'rpx'
    unit: 'rpx',
  },
  // 修改$u.props对象的属性
  props: {
    // 修改radio组件的size参数的默认值，相当于执行 uni.$u.props.radio.size = 30
    radio: {
      size: 15,
    },
    // 其他组件属性配置
    // ......
  },
});
uni.$http = $http;
// 配置请求根路径
$http.baseUrl = BaseUrl;
// 请求开始之前做一些事情
$http.beforeRequest = function (options) {
  // console.log(options,'httpOptions');
  const token = get_token();
  if (token) {
    options.header['X-Access-Token'] = token;
  }
  if (options.data?.isFormData) {
    options.header['content-type'] = 'application/x-www-form-urlencoded';
  }
  uni.showLoading({
    title: '数据加载中...',
  });
};
// 请求完成之后做一些事情
$http.afterRequest = function (res) {
  uni.hideLoading();
  if (res.data.code === 401) {
    uni.showToast({
      title: 'token过期，请重新登录',
      duration: 1500,
      icon: 'none',
    });
    // token 失效 重置token并跳转到登录页
    reset_token();
    uni.navigateTo({
      url: '/pages/login/login',
    });
  }
  if (res.data.code === 500) {
    uni.showToast({
      title: res.data.msg,
      duration: 1500,
      icon: 'none',
    });
  }
  if (!res.data.success) {
    uni.showToast({
      title: res.data.message,
      duration: 3000,
      icon: 'Error',
    });
  }

  // console.log('afterRequest',res);
};
// 封装的展示消息提示的方法
uni.$showMsg = function (title = '数据加载失败！', duration = 1500) {
  uni.showToast({
    title,
    duration,
    icon: 'none',
  });
};
Vue.config.productionTip = false;
App.mpType = 'app';
const app = new Vue({
  ...App,
});
app.$mount();
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue';
import App from './App.vue';
// import { confimMenuExist } from './utils/fun';
export function createApp() {
  const app = createSSRApp(App);
  return {
    app,
  };
}
// #endif
